package com.example.demo.generator.scaffold.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.generator.scaffold.dto.ScaffoldGenerationRequest;
import com.example.demo.generator.scaffold.dto.log.ScaffoldLogListRequest;
import com.example.demo.generator.scaffold.dto.log.ScaffoldLogRecord;
import com.example.demo.generator.scaffold.dto.stats.ScaffoldStatsQueryRequest;
import com.example.demo.generator.scaffold.dto.stats.ScaffoldStatsResponse;
import com.example.demo.generator.scaffold.entity.ScaffoldGenerationLog;
import com.example.demo.generator.scaffold.util.ZipPackagingService;
import com.example.demo.common.PageResult;

/**
 * 脚手架生成记录服务。
 */
public interface ScaffoldGenerationLogService extends IService<ScaffoldGenerationLog> {

    /**
     * 记录一次 ZIP 生成日志。
     *
     * @param request    原始生成请求
     * @param zipResult  生成结果
     * @param clientIp   请求来源 IP
     * @param userId     操作用户 ID
     */
    void recordGeneration(ScaffoldGenerationRequest request,
                          ZipPackagingService.ZipResult zipResult,
                          String clientIp,
                          Long userId);

    /**
     * 多维度统计数据查询。
     *
     * @param request 查询条件
     * @return 统计结果
     */
    ScaffoldStatsResponse queryStats(ScaffoldStatsQueryRequest request);

    /**
     * 分页查询生成日志。
     *
     * @param request 查询条件
     * @return 分页结果
     */
    PageResult<ScaffoldLogRecord> listLogs(ScaffoldLogListRequest request);
}
